<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>jsrsasign JavaScript API Reference - KEYUTIL</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header" style="background: #7F8FB1; color: white; margin: -10px">
&nbsp; <b><a href="https://kjur.github.io/jsrsasign/" style="color: white">jsrsasign</a></b> JavaScript API Reference
</div>

		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/global__.html">global__</a></i></li>
	
	<li><a href="../symbols/ASN1HEX.html">ASN1HEX</a></li>
	
	<li><a href="../symbols/Base64x.html">Base64x</a></li>
	
	<li><a href="../symbols/KEYUTIL.html">KEYUTIL</a></li>
	
	<li><a href="../symbols/KJUR.html">KJUR</a></li>
	
	<li><a href="../symbols/KJUR.asn1.html">KJUR.asn1</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ASN1Object.html">KJUR.asn1.ASN1Object</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ASN1Util.html">KJUR.asn1.ASN1Util</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cades.html">KJUR.asn1.cades</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cades.CAdESUtil.html">KJUR.asn1.cades.CAdESUtil</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cades.CompleteCertificateRefs.html">KJUR.asn1.cades.CompleteCertificateRefs</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cades.OtherCertID.html">KJUR.asn1.cades.OtherCertID</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cades.OtherHash.html">KJUR.asn1.cades.OtherHash</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cades.OtherHashAlgAndValue.html">KJUR.asn1.cades.OtherHashAlgAndValue</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cades.OtherHashValue.html">KJUR.asn1.cades.OtherHashValue</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cades.SignaturePolicyId.html">KJUR.asn1.cades.SignaturePolicyId</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cades.SignaturePolicyIdentifier.html">KJUR.asn1.cades.SignaturePolicyIdentifier</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cades.SignatureTimeStamp.html">KJUR.asn1.cades.SignatureTimeStamp</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.html">KJUR.asn1.cms</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.Attribute.html">KJUR.asn1.cms.Attribute</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.AttributeList.html">KJUR.asn1.cms.AttributeList</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.CertificateSet.html">KJUR.asn1.cms.CertificateSet</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.CMSParser.html">KJUR.asn1.cms.CMSParser</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.CMSUtil.html">KJUR.asn1.cms.CMSUtil</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.ContentInfo.html">KJUR.asn1.cms.ContentInfo</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.ContentType.html">KJUR.asn1.cms.ContentType</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.EncapsulatedContentInfo.html">KJUR.asn1.cms.EncapsulatedContentInfo</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.ESSCertID.html">KJUR.asn1.cms.ESSCertID</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.ESSCertIDv2.html">KJUR.asn1.cms.ESSCertIDv2</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.IssuerAndSerialNumber.html">KJUR.asn1.cms.IssuerAndSerialNumber</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.IssuerSerial.html">KJUR.asn1.cms.IssuerSerial</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.MessageDigest.html">KJUR.asn1.cms.MessageDigest</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.OtherRevocationFormat.html">KJUR.asn1.cms.OtherRevocationFormat</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.RevocationInfoChoice.html">KJUR.asn1.cms.RevocationInfoChoice</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.RevocationInfoChoices.html">KJUR.asn1.cms.RevocationInfoChoices</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.SignedData.html">KJUR.asn1.cms.SignedData</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.SignerIdentifier.html">KJUR.asn1.cms.SignerIdentifier</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.SignerInfo.html">KJUR.asn1.cms.SignerInfo</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.SigningCertificate.html">KJUR.asn1.cms.SigningCertificate</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.SigningCertificateV2.html">KJUR.asn1.cms.SigningCertificateV2</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.SigningTime.html">KJUR.asn1.cms.SigningTime</a></li>
	
	<li><a href="../symbols/KJUR.asn1.cms.SubjectKeyIdentifier.html">KJUR.asn1.cms.SubjectKeyIdentifier</a></li>
	
	<li><a href="../symbols/KJUR.asn1.csr.html">KJUR.asn1.csr</a></li>
	
	<li><a href="../symbols/KJUR.asn1.csr.CertificationRequest.html">KJUR.asn1.csr.CertificationRequest</a></li>
	
	<li><a href="../symbols/KJUR.asn1.csr.CertificationRequestInfo.html">KJUR.asn1.csr.CertificationRequestInfo</a></li>
	
	<li><a href="../symbols/KJUR.asn1.csr.CSRUtil.html">KJUR.asn1.csr.CSRUtil</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERAbstractString.html">KJUR.asn1.DERAbstractString</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERAbstractStructured.html">KJUR.asn1.DERAbstractStructured</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERAbstractTime.html">KJUR.asn1.DERAbstractTime</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERBitString.html">KJUR.asn1.DERBitString</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERBMPString.html">KJUR.asn1.DERBMPString</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERBoolean.html">KJUR.asn1.DERBoolean</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DEREnumerated.html">KJUR.asn1.DEREnumerated</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERGeneralizedTime.html">KJUR.asn1.DERGeneralizedTime</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERIA5String.html">KJUR.asn1.DERIA5String</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERInteger.html">KJUR.asn1.DERInteger</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERNull.html">KJUR.asn1.DERNull</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERNumericString.html">KJUR.asn1.DERNumericString</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERObjectIdentifier.html">KJUR.asn1.DERObjectIdentifier</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DEROctetString.html">KJUR.asn1.DEROctetString</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERPrintableString.html">KJUR.asn1.DERPrintableString</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERSequence.html">KJUR.asn1.DERSequence</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERSet.html">KJUR.asn1.DERSet</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERTaggedObject.html">KJUR.asn1.DERTaggedObject</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERTeletexString.html">KJUR.asn1.DERTeletexString</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERUTCTime.html">KJUR.asn1.DERUTCTime</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERUTF8String.html">KJUR.asn1.DERUTF8String</a></li>
	
	<li><a href="../symbols/KJUR.asn1.DERVisibleString.html">KJUR.asn1.DERVisibleString</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ocsp.html">KJUR.asn1.ocsp</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ocsp.BasicOCSPResponse.html">KJUR.asn1.ocsp.BasicOCSPResponse</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ocsp.CertID.html">KJUR.asn1.ocsp.CertID</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ocsp.CertStatus.html">KJUR.asn1.ocsp.CertStatus</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ocsp.OCSPParser.html">KJUR.asn1.ocsp.OCSPParser</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ocsp.OCSPRequest.html">KJUR.asn1.ocsp.OCSPRequest</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ocsp.OCSPResponse.html">KJUR.asn1.ocsp.OCSPResponse</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ocsp.OCSPUtil.html">KJUR.asn1.ocsp.OCSPUtil</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ocsp.Request.html">KJUR.asn1.ocsp.Request</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ocsp.ResponderID.html">KJUR.asn1.ocsp.ResponderID</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ocsp.ResponseBytes.html">KJUR.asn1.ocsp.ResponseBytes</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ocsp.ResponseData.html">KJUR.asn1.ocsp.ResponseData</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ocsp.SingleResponse.html">KJUR.asn1.ocsp.SingleResponse</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ocsp.SingleResponseList.html">KJUR.asn1.ocsp.SingleResponseList</a></li>
	
	<li><a href="../symbols/KJUR.asn1.ocsp.TBSRequest.html">KJUR.asn1.ocsp.TBSRequest</a></li>
	
	<li><a href="../symbols/KJUR.asn1.tsp.html">KJUR.asn1.tsp</a></li>
	
	<li><a href="../symbols/KJUR.asn1.tsp.AbstractTSAAdapter.html">KJUR.asn1.tsp.AbstractTSAAdapter</a></li>
	
	<li><a href="../symbols/KJUR.asn1.tsp.Accuracy.html">KJUR.asn1.tsp.Accuracy</a></li>
	
	<li><a href="../symbols/KJUR.asn1.tsp.FixedTSAAdapter.html">KJUR.asn1.tsp.FixedTSAAdapter</a></li>
	
	<li><a href="../symbols/KJUR.asn1.tsp.MessageImprint.html">KJUR.asn1.tsp.MessageImprint</a></li>
	
	<li><a href="../symbols/KJUR.asn1.tsp.PKIFailureInfo.html">KJUR.asn1.tsp.PKIFailureInfo</a></li>
	
	<li><a href="../symbols/KJUR.asn1.tsp.PKIFreeText.html">KJUR.asn1.tsp.PKIFreeText</a></li>
	
	<li><a href="../symbols/KJUR.asn1.tsp.PKIStatus.html">KJUR.asn1.tsp.PKIStatus</a></li>
	
	<li><a href="../symbols/KJUR.asn1.tsp.PKIStatusInfo.html">KJUR.asn1.tsp.PKIStatusInfo</a></li>
	
	<li><a href="../symbols/KJUR.asn1.tsp.SimpleTSAAdapter.html">KJUR.asn1.tsp.SimpleTSAAdapter</a></li>
	
	<li><a href="../symbols/KJUR.asn1.tsp.TimeStampReq.html">KJUR.asn1.tsp.TimeStampReq</a></li>
	
	<li><a href="../symbols/KJUR.asn1.tsp.TimeStampResp.html">KJUR.asn1.tsp.TimeStampResp</a></li>
	
	<li><a href="../symbols/KJUR.asn1.tsp.TimeStampToken.html">KJUR.asn1.tsp.TimeStampToken</a></li>
	
	<li><a href="../symbols/KJUR.asn1.tsp.TSPParser.html">KJUR.asn1.tsp.TSPParser</a></li>
	
	<li><a href="../symbols/KJUR.asn1.tsp.TSPUtil.html">KJUR.asn1.tsp.TSPUtil</a></li>
	
	<li><a href="../symbols/KJUR.asn1.tsp.TSTInfo.html">KJUR.asn1.tsp.TSTInfo</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.html">KJUR.asn1.x509</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.AdobeTimeStamp.html">KJUR.asn1.x509.AdobeTimeStamp</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.AlgorithmIdentifier.html">KJUR.asn1.x509.AlgorithmIdentifier</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.AttributeTypeAndValue.html">KJUR.asn1.x509.AttributeTypeAndValue</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.AuthorityInfoAccess.html">KJUR.asn1.x509.AuthorityInfoAccess</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.AuthorityKeyIdentifier.html">KJUR.asn1.x509.AuthorityKeyIdentifier</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.BasicConstraints.html">KJUR.asn1.x509.BasicConstraints</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.Certificate.html">KJUR.asn1.x509.Certificate</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.CertificatePolicies.html">KJUR.asn1.x509.CertificatePolicies</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.CRL.html">KJUR.asn1.x509.CRL</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.CRLDistributionPoints.html">KJUR.asn1.x509.CRLDistributionPoints</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.CRLEntry.html">KJUR.asn1.x509.CRLEntry</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.CRLNumber.html">KJUR.asn1.x509.CRLNumber</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.CRLReason.html">KJUR.asn1.x509.CRLReason</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.DisplayText.html">KJUR.asn1.x509.DisplayText</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.DistributionPoint.html">KJUR.asn1.x509.DistributionPoint</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.DistributionPointName.html">KJUR.asn1.x509.DistributionPointName</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.Extension.html">KJUR.asn1.x509.Extension</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.Extensions.html">KJUR.asn1.x509.Extensions</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.ExtKeyUsage.html">KJUR.asn1.x509.ExtKeyUsage</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.GeneralName.html">KJUR.asn1.x509.GeneralName</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.GeneralNames.html">KJUR.asn1.x509.GeneralNames</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.GeneralSubtree.html">KJUR.asn1.x509.GeneralSubtree</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.InhibitAnyPolicy.html">KJUR.asn1.x509.InhibitAnyPolicy</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.IssuerAltName.html">KJUR.asn1.x509.IssuerAltName</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.KeyUsage.html">KJUR.asn1.x509.KeyUsage</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.NameConstraints.html">KJUR.asn1.x509.NameConstraints</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.NoticeReference.html">KJUR.asn1.x509.NoticeReference</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.OCSPNoCheck.html">KJUR.asn1.x509.OCSPNoCheck</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.OCSPNonce.html">KJUR.asn1.x509.OCSPNonce</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.OID.html">KJUR.asn1.x509.OID</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.OtherName.html">KJUR.asn1.x509.OtherName</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.PolicyConstraints.html">KJUR.asn1.x509.PolicyConstraints</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.PolicyInformation.html">KJUR.asn1.x509.PolicyInformation</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.PolicyMappings.html">KJUR.asn1.x509.PolicyMappings</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.PolicyQualifierInfo.html">KJUR.asn1.x509.PolicyQualifierInfo</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.PrivateExtension.html">KJUR.asn1.x509.PrivateExtension</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.RDN.html">KJUR.asn1.x509.RDN</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.SubjectAltName.html">KJUR.asn1.x509.SubjectAltName</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.SubjectDirectoryAttributes.html">KJUR.asn1.x509.SubjectDirectoryAttributes</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.SubjectKeyIdentifier.html">KJUR.asn1.x509.SubjectKeyIdentifier</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.SubjectPublicKeyInfo.html">KJUR.asn1.x509.SubjectPublicKeyInfo</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.TBSCertificate.html">KJUR.asn1.x509.TBSCertificate</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.TBSCertList.html">KJUR.asn1.x509.TBSCertList</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.Time.html">KJUR.asn1.x509.Time</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.UserNotice.html">KJUR.asn1.x509.UserNotice</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.X500Name.html">KJUR.asn1.x509.X500Name</a></li>
	
	<li><a href="../symbols/KJUR.asn1.x509.X509Util.html">KJUR.asn1.x509.X509Util</a></li>
	
	<li><a href="../symbols/KJUR.crypto.html">KJUR.crypto</a></li>
	
	<li><a href="../symbols/KJUR.crypto.Cipher.html">KJUR.crypto.Cipher</a></li>
	
	<li><a href="../symbols/KJUR.crypto.DSA.html">KJUR.crypto.DSA</a></li>
	
	<li><a href="../symbols/KJUR.crypto.ECDSA.html">KJUR.crypto.ECDSA</a></li>
	
	<li><a href="../symbols/KJUR.crypto.ECParameterDB.html">KJUR.crypto.ECParameterDB</a></li>
	
	<li><a href="../symbols/KJUR.crypto.Mac.html">KJUR.crypto.Mac</a></li>
	
	<li><a href="../symbols/KJUR.crypto.MessageDigest.html">KJUR.crypto.MessageDigest</a></li>
	
	<li><a href="../symbols/KJUR.crypto.OID.html">KJUR.crypto.OID</a></li>
	
	<li><a href="../symbols/KJUR.crypto.Signature.html">KJUR.crypto.Signature</a></li>
	
	<li><a href="../symbols/KJUR.crypto.Util.html">KJUR.crypto.Util</a></li>
	
	<li><a href="../symbols/KJUR.jws.html">KJUR.jws</a></li>
	
	<li><a href="../symbols/KJUR.jws.IntDate.html">KJUR.jws.IntDate</a></li>
	
	<li><a href="../symbols/KJUR.jws.JWS.html">KJUR.jws.JWS</a></li>
	
	<li><a href="../symbols/KJUR.jws.JWSJS.html">KJUR.jws.JWSJS</a></li>
	
	<li><a href="../symbols/KJUR.lang.String.html">KJUR.lang.String</a></li>
	
	<li><a href="../symbols/RSAKey.html">RSAKey</a></li>
	
	<li><a href="../symbols/X509.html">X509</a></li>
	
	<li><a href="../symbols/X509CRL.html">X509CRL</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class KEYUTIL
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				class for RSA/ECC/DSA key utility
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/keyutil-1.0.js.html">keyutil-1.0.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class KEYUTIL.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/KEYUTIL.html#constructor">KEYUTIL</a></b>()
							</div>
							<div class="description"><br/>
<a href="../symbols/KEYUTIL.html">KEYUTIL</a> class is an update of former PKCS5PKEY class.</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class KEYUTIL.">
					<caption>Field Summary</caption>
					<thead>
						<tr>
							<th scope="col">Field Attributes</th>
							<th scope="col">Field Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.version">version</a></b>
								</div>
								<div class="description">decrypt private key by shared key
version string of KEYUTIL class</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class KEYUTIL.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.generateKeypair">generateKeypair</a></b>(alg, keylenOrCurve)
								</div>
								<div class="description">This method generates a key pair of public key algorithm.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.getDecryptedKeyHex">getDecryptedKeyHex</a></b>(sEncryptedPEM, passcode)
								</div>
								<div class="description">decrypt PEM formatted protected PKCS#5 private key with passcode</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.getDKFromPBES2Param">getDKFromPBES2Param</a></b>(pPBES2, passcode)
								</div>
								<div class="description">get derived key from PBES2 parameters and passcode
This method derives a key from a passcode and a PBES2 parameter by 
<a href="../symbols/KEYUTIL.html#.parsePBES2">KEYUTIL.parsePBES2</a>.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.getJWK">getJWK</a></b>(keyinfo, nokid, nox5c, nox5t, nox5t2)
								</div>
								<div class="description">convert from certificate, public/private key object to RFC 7517 JSON Web Key(JWK)<br/>
This static method provides 
<a href="https://datatracker.ietf.org/doc/html/rfc7517">
RFC 7517 JSON Web Key(JWK) JSON</a>
object from following argument types:
<ul>
<li>
<b>JWK private key</b>
<ul>
<li>RSAKey or KJUR.crypto.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.getJWKFromKey">getJWKFromKey</a></b>()
								</div>
								<div class="description">convert from RSAKey/KJUR.crypto.ECDSA public/private key object to RFC 7517 JSON Web Key(JWK) (DEPRECATED)<br/>
This static method convert from RSAKey/KJUR.crypto.ECDSA public/private key object 
to RFC 7517 JSON Web Key(JWK)</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.getKey">getKey</a></b>(param, passcode, hextype)
								</div>
								<div class="description">get private or public key object from any arguments
This method gets private or public key object(<a href="../symbols/RSAKey.html">RSAKey</a>, <a href="../symbols/KJUR.crypto.DSA.html">KJUR.crypto.DSA</a> or <a href="../symbols/KJUR.crypto.ECDSA.html">KJUR.crypto.ECDSA</a>)
for RSA, DSA and ECC.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.getKeyAndUnusedIvByPasscodeAndIvsalt">getKeyAndUnusedIvByPasscodeAndIvsalt</a></b>(algName, passcode, hexadecimal)
								</div>
								<div class="description">the same function as OpenSSL EVP_BytsToKey to generate shared key and IV</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.getKeyFromCSRHex">getKeyFromCSRHex</a></b>(csrHex)
								</div>
								<div class="description">get RSAKey/DSA/ECDSA public key object from hexadecimal string of PKCS#10 CSR</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.getKeyFromCSRPEM">getKeyFromCSRPEM</a></b>(csrPEM)
								</div>
								<div class="description">get RSAKey/DSA/ECDSA public key object from PEM formatted PKCS#10 CSR string</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.getKeyFromEncryptedPKCS8PEM">getKeyFromEncryptedPKCS8PEM</a></b>(pkcs8PEM, passcode)
								</div>
								<div class="description">get RSAKey/ECDSA private key object from encrypted PEM PKCS#8 private key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.getKeyFromPlainPrivatePKCS8Hex">getKeyFromPlainPrivatePKCS8Hex</a></b>(prvKeyHex)
								</div>
								<div class="description">get RSAKey/DSA/ECDSA private key object from HEX plain PEM PKCS#8 private key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.getKeyFromPlainPrivatePKCS8PEM">getKeyFromPlainPrivatePKCS8PEM</a></b>(pkcs8PEM)
								</div>
								<div class="description">get RSAKey/ECDSA private key object from PEM plain PEM PKCS#8 private key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.getKeyID">getKeyID</a></b>(obj)
								</div>
								<div class="description">get key ID by public key object for subject or authority key identifier
This static method generates a key identifier from a public key
by the method described in 
<a href="https://tools.ietf.org/html/rfc5280#section-4.2.1.2"
target="_blank">RFC 5280 4.2.1.2.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.getPBKDF2KeyHexFromParam">getPBKDF2KeyHexFromParam</a></b>(info, passcode)
								</div>
								<div class="description">generate PBKDF2 key hexstring with specified passcode and information (DEPRECATED)
As for info, this uses following properties:
<ul>
<li>info.pbkdf2Salt - hexadecimal string of PBKDF2 salt</li>
<li>info.pkbdf2Iter - iteration count</li>
</ul>
Currently, this method only supports PKCS#5v2.0 with PBES2/PBDKF2 of HmacSHA1 and TripleDES.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.getPEM">getPEM</a></b>(keyObjOrHex, formatType, passwd, encAlg, hexType, ivsaltHex)
								</div>
								<div class="description">get PEM formatted private or public key file from a RSA/ECDSA/DSA key object
<dl>
<dt><b>NOTE1:</b>
<dd>
PKCS#5 encrypted private key protection algorithm supports DES-CBC, 
DES-EDE3-CBC and AES-{128,192,256}-CBC
<dt><b>NOTE2:</b>
<dd>
OpenSSL supports
<dt><b>NOTE3:</b>
<dd>
Parameter "ivsaltHex" supported since jsrsasign 8.0.0 keyutil 1.2.0.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.getPlainHexFromEncryptedPKCS8PEM">getPlainHexFromEncryptedPKCS8PEM</a></b>(pkcs8PEM, passcode)
								</div>
								<div class="description">get plaintext hexadecimal PKCS#8 private key from encrypted PKCS#8 PEM private key
This will get a plaintext hexadecimal PKCS#8 private key from a
encrypted PKCS#8 PEM private key.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.parseCSRHex">parseCSRHex</a></b>(csrHex)
								</div>
								<div class="description">parse hexadecimal string of PKCS#10 CSR (certificate signing request)
Resulted associative array has following properties:
<ul>
<li>p8pubkeyhex - hexadecimal string of subject public key in PKCS#8</li>
</ul></div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.parseHexOfEncryptedPKCS8">parseHexOfEncryptedPKCS8</a></b>(passcode)
								</div>
								<div class="description">generate PBKDF2 key hexstring with specified passcode and information (DEPRECATED)
The associative array which is returned by this method has following properties:
<ul>
<li>info.pbkdf2Salt - hexadecimal string of PBKDF2 salt</li>
<li>info.pkbdf2Iter - iteration count</li>
<li>info.ciphertext - hexadecimal string of encrypted private key</li>
<li>info.encryptionSchemeAlg - encryption algorithm name (currently TripleDES only)</li>
<li>info.encryptionSchemeIV - initial vector for encryption algorithm</li>
</ul>
Currently, this method only supports PKCS#5v2.0 with PBES2/PBDKF2 of HmacSHA1 and TripleDES.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.parsePBES2">parsePBES2</a></b>(hP8Prv)
								</div>
								<div class="description">parse ASN.1 hexadecimal encrypted PKCS#8 private key and return as JSON
This method parses ASN.1 hexadecimal encrypted PKCS#8 private key and returns as 
JSON object based on 
<a href="https://datatracker.ietf.org/doc/html/rfc8018" target="_blank">RFC 8018</a>.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.parsePKCS5PEM">parsePKCS5PEM</a></b>(sEncryptedPEM)
								</div>
								<div class="description">parse PEM formatted passcode protected PKCS#5 private key
Resulted hash has following attributes.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.parsePlainPrivatePKCS8Hex">parsePlainPrivatePKCS8Hex</a></b>(pkcs8PrvHex)
								</div>
								<div class="description">parse hexadecimal string of plain PKCS#8 private key
Resulted associative array has following properties:
<ul>
<li>algoid - hexadecimal string of OID of asymmetric key algorithm</li>
<li>algparam - hexadecimal string of OID of ECC curve name or null</li>
<li>keyidx - string starting index of key in pkcs8PrvHex</li>
</ul></div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.parsePublicPKCS8Hex">parsePublicPKCS8Hex</a></b>(pkcs8PubHex)
								</div>
								<div class="description">parse hexadecimal string of PKCS#8 RSA/EC/DSA public key
Resulted hash has following attributes.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">KEYUTIL.<b><a href="../symbols/KEYUTIL.html#.parsePublicRawRSAKeyHex">parsePublicRawRSAKeyHex</a></b>(pubRawRSAHex)
								</div>
								<div class="description">parse hexadecimal string of plain PKCS#8 private key
Resulted associative array has following properties:
<ul>
<li>n - hexadecimal string of public key
<li>e - hexadecimal string of public exponent
</ul></div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>KEYUTIL</b>()
				</div>
				
				<div class="description">
					<br/>
<a href="../symbols/KEYUTIL.html">KEYUTIL</a> class is an update of former PKCS5PKEY class.
<a href="../symbols/KEYUTIL.html">KEYUTIL</a> class has following features:
<dl>
<dt><b>key loading - <a href="../symbols/KEYUTIL.html#.getKey">KEYUTIL.getKey</a></b>
<dd>
<ul>
<li>supports RSAKey and KJUR.crypto.{ECDSA,DSA} key object</li>
<li>supports private key and public key</li>
<li>supports encrypted and plain private key</li>
<li>supports PKCS#1, PKCS#5 and PKCS#8 key</li>
<li>supports public key in X.509 certificate</li>
<li>key represented by JSON object</li>
</ul>
NOTE1: Encrypted PKCS#8 only supports PBKDF2/HmacSHA1/3DES <br/>
NOTE2: Encrypted PKCS#5 supports DES-CBC, DES-EDE3-CBC, AES-{128,192.256}-CBC <br/>

<dt><b>exporting key - <a href="../symbols/KEYUTIL.html#.getPEM">KEYUTIL.getPEM</a></b>
<dd>
<a href="../symbols/KEYUTIL.html#.getPEM">KEYUTIL.getPEM</a> method supports following formats:
<ul>
<li>supports RSA/EC/DSA keys</li>
<li>PKCS#1 plain RSA/EC/DSA private key</li>
<li>PKCS#5 encrypted RSA/EC/DSA private key with DES-CBC, DES-EDE3-CBC, AES-{128,192.256}-CBC</li>
<li>PKCS#8 plain RSA/EC/DSA private key</li>
<li>PKCS#8 encrypted RSA/EC/DSA private key with PBKDF2_HmacSHA1_3DES</li>
</ul>

<dt><b>keypair generation - <a href="../symbols/KEYUTIL.html#.generateKeypair">KEYUTIL.generateKeypair</a></b>
<ul>
<li>generate key pair of <a href="../symbols/RSAKey.html">RSAKey</a> or <a href="../symbols/KJUR.crypto.ECDSA.html">KJUR.crypto.ECDSA</a>.</li>
<li>generate private key and convert it to PKCS#5 encrypted private key.</li>
</ul>
NOTE: <a href="../symbols/KJUR.crypto.DSA.html">KJUR.crypto.DSA</a> is not yet supported.
</dl>
					
				</div>
				
				
				
				<pre class="code">// 1. loading PEM private key
var key = KEYUTIL.getKey(pemPKCS1PrivateKey);
var key = KEYUTIL.getKey(pemPKCS5EncryptedPrivateKey, "passcode");
var key = KEYUTIL.getKey(pemPKCS5PlainRsaDssEcPrivateKey);
var key = KEYUTIL.getKey(pemPKC85PlainPrivateKey);
var key = KEYUTIL.getKey(pemPKC85EncryptedPrivateKey, "passcode");
// 2. loading PEM public key
var key = KEYUTIL.getKey(pemPKCS8PublicKey);
var key = KEYUTIL.getKey(pemX509Certificate);
// 3. exporting private key
var pem = KEYUTIL.getPEM(privateKeyObj, "PKCS1PRV");
var pem = KEYUTIL.getPEM(privateKeyObj, "PKCS5PRV", "passcode"); // DES-EDE3-CBC by default
var pem = KEYUTIL.getPEM(privateKeyObj, "PKCS5PRV", "passcode", "DES-CBC");
var pem = KEYUTIL.getPEM(privateKeyObj, "PKCS8PRV");
var pem = KEYUTIL.getPEM(privateKeyObj, "PKCS8PRV", "passcode");
// 4. exporting public key
var pem = KEYUTIL.getPEM(publicKeyObj);</pre>
				
				
				
				
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			
				<div class="sectionTitle">
					Field Detail
				</div>
				
					<a name=".version"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">KEYUTIL.</span><b>version</b>
					
					</div>
					<div class="description">
						decrypt private key by shared key
version string of KEYUTIL class
						
						
					</div>
					
					

						
						
						
						

					
				
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name=".generateKeypair"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Array}</span>
					<span class="light">KEYUTIL.</span><b>generateKeypair</b>(alg, keylenOrCurve)
					
					</div>
					<div class="description">
						This method generates a key pair of public key algorithm.
The result will be an associative array which has following
parameters:
<ul>
<li>prvKeyObj - RSAKey or ECDSA object of private key</li>
<li>pubKeyObj - RSAKey or ECDSA object of public key</li>
</ul>
NOTE1: As for RSA algoirthm, public exponent has fixed
value '0x10001'.
NOTE2: As for EC algorithm, supported names of curve are
secp256r1, secp256k1, secp384r1 and secp521r1.
NOTE3: DSA is not supported yet.
						
						
					</div>
					
					
					
					<pre class="code">var rsaKeypair = KEYUTIL.generateKeypair("RSA", 1024);
var ecKeypair = KEYUTIL.generateKeypair("EC", "secp256r1");</pre>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>alg</b>
									
								</dt>
								<dd>'RSA' or 'EC'</dd>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>keylenOrCurve</b>
									
								</dt>
								<dd>key length for RSA or curve name for EC</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>keyutil 1.0.1</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{Array}</span> associative array of keypair which has prvKeyObj and pubKeyObj parameters</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".getDecryptedKeyHex"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{String}</span>
					<span class="light">KEYUTIL.</span><b>getDecryptedKeyHex</b>(sEncryptedPEM, passcode)
					
					</div>
					<div class="description">
						decrypt PEM formatted protected PKCS#5 private key with passcode
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>sEncryptedPEM</b>
									
								</dt>
								<dd>PEM formatted protected passcode protected PKCS#5 private key</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>passcode</b>
									
								</dt>
								<dd>passcode to decrypt private key (ex. 'password')</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{String}</span> hexadecimal string of decrypted RSA priavte key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".getDKFromPBES2Param"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{string}</span>
					<span class="light">KEYUTIL.</span><b>getDKFromPBES2Param</b>(pPBES2, passcode)
					
					</div>
					<div class="description">
						get derived key from PBES2 parameters and passcode
This method derives a key from a passcode and a PBES2 parameter by 
<a href="../symbols/KEYUTIL.html#.parsePBES2">KEYUTIL.parsePBES2</a>.
Currently following algorithms are supported:
<ul>
<li>prf(psudorandom function) - hmacWithSHA1,SHA224,SHA256,SHA384,SHA512</li>
<li>encryptionScheme - des-EDE3-CBC,aes128-CBC,aes256-CBC</li>
</ul>
						
						
					</div>
					
					
					
					<pre class="code">pPBES2 = {
  "prf": "hmacWithSHA256",
  "salt": "1234567890abcdef",
  "iter": 2048,
  "encalg": "aes256-CBC",
  "enciv": "12ab...",
  "enc": "34cd..."
}
KEYUTIL.getDKFromPBES2Param(pPBES2, "passwd") &rarr; "3ab10fd..."</pre>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{object}</span> <b>pPBES2</b>
									
								</dt>
								<dd>parsed PBES2 parameter by <a href="../symbols/KEYUTIL.html#.parsePBES2">KEYUTIL.parsePBES2</a> method</dd>
							
								<dt>
									<span class="light fixedFont">{string}</span> <b>passcode</b>
									
								</dt>
								<dd>password to derive the key</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>jsrsasign 10.9.0 keyutil 1.3.0</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{string}</span> hexadecimal string of derived key</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">See:</dt>
							
								<dd><a href="../symbols/KEYUTIL.html#.parsePBES2">KEYUTIL.parsePBES2</a></dd>
							
							</dl>
						

					<hr />
				
					<a name=".getJWK"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Object}</span>
					<span class="light">KEYUTIL.</span><b>getJWK</b>(keyinfo, nokid, nox5c, nox5t, nox5t2)
					
					</div>
					<div class="description">
						convert from certificate, public/private key object to RFC 7517 JSON Web Key(JWK)<br/>
This static method provides 
<a href="https://datatracker.ietf.org/doc/html/rfc7517">
RFC 7517 JSON Web Key(JWK) JSON</a>
object from following argument types:
<ul>
<li>
<b>JWK private key</b>
<ul>
<li>RSAKey or KJUR.crypto.{ECDSA,DSA} private key object</li>
<li>PKCS#5 or PKCS#8 plain PEM private key</li>
</ul>
</li>
<li>
<b>JWK public key</b>
<ul>
<li>RSAKey or KJUR.crypto.{ECDSA,DSA} public key object</li>
<li>PKCS#5 or PKCS#8 PEM public key</li>
<li>X509 certificate object</li>
<li>PEM certificate</li>
</ul>
</li>
</ul>
						
						
					</div>
					
					
					
					<pre class="code">kp1 = KEYUTIL.generateKeypair("EC", "P-256");
jwkPrv1 = KEYUTIL.getJWK(kp1.prvKeyObj);
jwkPub1 = KEYUTIL.getJWK(kp1.pubKeyObj);

kp2 = KEYUTIL.generateKeypair("RSA", 2048);
jwkPrv2 = KEYUTIL.getJWK(kp2.prvKeyObj);
jwkPub2 = KEYUTIL.getJWK(kp2.pubKeyObj);

// from PEM certificate
KEYUTIL.getJWK("-----BEGIN CERTIFICATE...") &rarr;
{
  kty: "EC", crv: "P-521", x: "...", y: "...",
  x5c: ["MI..."],
  x5t: "...",
  "x5t#S256": "...",
  kid: "..."
}

// from X509 object
x509obj = new X509("-----BEGIN CERTIFICATE...");
KEYUTIL.getJWK(x509obj) &rarr;
{
  kty: "EC", crv: "P-521", x: "...", y: "...",
  ...
}

// from PEM certificate without kid, x5t and x5t#S256 (i.e. only x5c)
KEYUTIL.getJWK("-----BEGIN CERTIFICATE...", true, false, true, true) &rarr;
{
  kty: "EC", crv: "P-521", x: "...", y: "...",
  x5c: ["MI..."]
}</pre>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Object or string}</span> <b>keyinfo</b>
									
								</dt>
								<dd>public/private key object, PEM key or PEM certificate</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>nokid</b>
									
								</dt>
								<dd>set true if you don't need kid (OPTION, DEFAULT=undefined)</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>nox5c</b>
									
								</dt>
								<dd>set true if you don't need x5c of certificate (OPTION, DEFAULT=undefined)</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>nox5t</b>
									
								</dt>
								<dd>set true if you don't need x5t of certificate (OPTION, DEFAULT=undefined)</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>nox5t2</b>
									
								</dt>
								<dd>set true if you don't need x5c#S256 of certificate (OPTION, DEFAULT=undefined)</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>keyutil 1.2.5 jsrsasign 10.5.1</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{Object}</span> JWK object</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">See:</dt>
							
								<dd><a href="../symbols/RSAKey.html">RSAKey</a></dd>
							
								<dd><a href="../symbols/KJUR.crypto.ECDSA.html">KJUR.crypto.ECDSA</a></dd>
							
								<dd><a href="../symbols/KJUR.crypto.DSA.html">KJUR.crypto.DSA</a></dd>
							
							</dl>
						

					<hr />
				
					<a name=".getJWKFromKey"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Object}</span>
					<span class="light">KEYUTIL.</span><b>getJWKFromKey</b>()
					
					</div>
					<div class="description">
						convert from RSAKey/KJUR.crypto.ECDSA public/private key object to RFC 7517 JSON Web Key(JWK) (DEPRECATED)<br/>
This static method convert from RSAKey/KJUR.crypto.ECDSA public/private key object 
to RFC 7517 JSON Web Key(JWK)
						
						
					</div>
					
					
					
					<pre class="code">kp1 = KEYUTIL.generateKeypair("EC", "P-256");
jwkPrv1 = KEYUTIL.getJWKFromKey(kp1.prvKeyObj);
jwkPub1 = KEYUTIL.getJWKFromKey(kp1.pubKeyObj);

kp2 = KEYUTIL.generateKeypair("RSA", 2048);
jwkPrv2 = KEYUTIL.getJWKFromKey(kp2.prvKeyObj);
jwkPub2 = KEYUTIL.getJWKFromKey(kp2.pubKeyObj);

// if you need RFC 7638 JWK thumprint as kid do like this:
jwkPub2.kid = KJUR.jws.JWS.getJWKthumbprint(jwkPub2);</pre>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>RSAKey/KJUR.crypto.ECDSA</b>
									
								</dt>
								<dd>public/private key object</dd>
							
							</dl>
						
						
							<dl class="detailList">
							<dt class="heading">Deprecated:</dt>
							<dt>
								since jsrsasign 10.5.1 keyutil 1.2.5 please use getJWK method
							</dt>
							</dl>
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>keyutil 1.0.13 jsrsasign 5.0.14</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{Object}</span> JWK object</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">See:</dt>
							
								<dd><a href="../symbols/KEYUTIL.html#.getJWK">KEYUTIL.getJWK</a></dd>
							
							</dl>
						

					<hr />
				
					<a name=".getKey"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Object}</span>
					<span class="light">KEYUTIL.</span><b>getKey</b>(param, passcode, hextype)
					
					</div>
					<div class="description">
						get private or public key object from any arguments
This method gets private or public key object(<a href="../symbols/RSAKey.html">RSAKey</a>, <a href="../symbols/KJUR.crypto.DSA.html">KJUR.crypto.DSA</a> or <a href="../symbols/KJUR.crypto.ECDSA.html">KJUR.crypto.ECDSA</a>)
for RSA, DSA and ECC.
Arguments for this methods depends on a key format you specify.
Following key representations are supported.
<ul>
<li>ECC private/public key object(as is): param=KJUR.crypto.ECDSA</li>
<li>DSA private/public key object(as is): param=KJUR.crypto.DSA</li>
<li>RSA private/public key object(as is): param=RSAKey </li>
<li>ECC private key parameters: param={d: d, curve: curveName}</li>
<li>RSA private key parameters: param={n: n, e: e, d: d, p: p, q: q, dp: dp, dq: dq, co: co}<br/>
NOTE: Each value shall be hexadecimal string of key spec.</li>
<li>DSA private key parameters: param={p: p, q: q, g: g, y: y, x: x}<br/>
NOTE: Each value shall be hexadecimal string of key spec.</li>
<li>ECC public key parameters: param={xy: xy, curve: curveName}<br/>
NOTE: ECC public key 'xy' shall be concatination of "04", x-bytes-hex and y-bytes-hex.</li>
<li>DSA public key parameters: param={p: p, q: q, g: g, y: y}<br/>
NOTE: Each value shall be hexadecimal string of key spec.</li>
<li>RSA public key parameters: param={n: n, e: e} </li>
<li>X.509v1/v3 PEM certificate (RSA/DSA/ECC): param=pemString</li>
<li>PKCS#8 hexadecimal RSA/ECC public key: param=pemString, null, "pkcs8pub"</li>
<li>PKCS#8 PEM RSA/DSA/ECC public key: param=pemString</li>
<li>PKCS#5 plain hexadecimal RSA private key: param=hexString, null, "pkcs5prv"</li>
<li>PKCS#5 plain PEM RSA/DSA/EC private key: param=pemString</li>
<li>PKCS#8 plain PEM RSA/EC private key: param=pemString</li>
<li>PKCS#5 encrypted PEM RSA/DSA/EC private key: param=pemString, passcode</li>
<li>PKCS#8 encrypted PEM RSA/EC private key: param=pemString, passcode</li>
</ul>
Please note following limitation on encrypted keys:
<ul>
<li>Encrypted PKCS#8 only supports PBKDF2/HmacSHA1/3DES</li>
<li>Encrypted PKCS#5 supports DES-CBC, DES-EDE3-CBC, AES-{128,192.256}-CBC</li>
<li>JWT plain ECC private/public key</li>
<li>JWT plain RSA public key</li>
<li>JWT plain RSA private key with P/Q/DP/DQ/COEFF</li>
<li>JWT plain RSA private key without P/Q/DP/DQ/COEFF (since jsrsasign 5.0.0)</li>
</ul>
NOTE1: <a href="https://tools.ietf.org/html/rfc7517">RFC 7517 JSON Web Key(JWK)</a> support for RSA/ECC private/public key from jsrsasign 4.8.1.<br/>
NOTE2: X509v1 support is added since jsrsasign 5.0.11.

<h5>EXAMPLE</h5>
						
						
					</div>
					
					
					
					<pre class="code">// 1. loading private key from PEM string
keyObj = KEYUTIL.getKey("-----BEGIN RSA PRIVATE KEY...");
keyObj = KEYUTIL.getKey("-----BEGIN RSA PRIVATE KEY..., "passcode");
keyObj = KEYUTIL.getKey("-----BEGIN PRIVATE KEY...");
keyObj = KEYUTIL.getKey("-----BEGIN PRIVATE KEY...", "passcode");
keyObj = KEYUTIL.getKey("-----BEGIN EC PARAMETERS...-----BEGIN EC PRIVATE KEY...");
// 2. loading public key from PEM string
keyObj = KEYUTIL.getKey("-----BEGIN PUBLIC KEY...");
keyObj = KEYUTIL.getKey("-----BEGIN X509 CERTIFICATE...");
// 3. loading hexadecimal PKCS#5/PKCS#8 key
keyObj = KEYUTIL.getKey("308205c1...", null, "pkcs8pub");
keyObj = KEYUTIL.getKey("3082048b...", null, "pkcs5prv");
// 4. loading JSON Web Key(JWK)
keyObj = KEYUTIL.getKey({kty: "RSA", n: "0vx7...", e: "AQAB"});
keyObj = KEYUTIL.getKey({kty: "EC", crv: "P-256", 
                         x: "MKBC...", y: "4Etl6...", d: "870Mb..."});
// 5. bare hexadecimal key
keyObj = KEYUTIL.getKey({n: "75ab..", e: "010001"});</pre>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>param</b>
									
								</dt>
								<dd>parameter to get key object. see description in detail.</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>passcode</b>
									
								</dt>
								<dd>(OPTION) parameter to get key object. see description in detail.</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>hextype</b>
									
								</dt>
								<dd>(OPTOIN) parameter to get key object. see description in detail.</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>keyutil 1.0.0</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{Object}</span> <a href="../symbols/RSAKey.html">RSAKey</a>, <a href="../symbols/KJUR.crypto.ECDSA.html">KJUR.crypto.ECDSA</a> or <a href="../symbols/KJUR.crypto.ECDSA.html">KJUR.crypto.ECDSA</a> object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".getKeyAndUnusedIvByPasscodeAndIvsalt"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Hash}</span>
					<span class="light">KEYUTIL.</span><b>getKeyAndUnusedIvByPasscodeAndIvsalt</b>(algName, passcode, hexadecimal)
					
					</div>
					<div class="description">
						the same function as OpenSSL EVP_BytsToKey to generate shared key and IV
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>algName</b>
									
								</dt>
								<dd>name of symmetric key algorithm (ex. 'DES-EBE3-CBC')</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>passcode</b>
									
								</dt>
								<dd>passcode to decrypt private key (ex. 'password')</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>hexadecimal</b>
									
								</dt>
								<dd>string of IV. heading 8 bytes will be used for passcode salt</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{Hash}</span> hash of key and unused IV (ex. {keyhex:2fe3..., ivhex:3fad..})</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".getKeyFromCSRHex"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Object}</span>
					<span class="light">KEYUTIL.</span><b>getKeyFromCSRHex</b>(csrHex)
					
					</div>
					<div class="description">
						get RSAKey/DSA/ECDSA public key object from hexadecimal string of PKCS#10 CSR
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>csrHex</b>
									
								</dt>
								<dd>hexadecimal string of PKCS#10 CSR</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>keyutil 1.0.5</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{Object}</span> RSAKey/DSA/ECDSA public key object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".getKeyFromCSRPEM"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Object}</span>
					<span class="light">KEYUTIL.</span><b>getKeyFromCSRPEM</b>(csrPEM)
					
					</div>
					<div class="description">
						get RSAKey/DSA/ECDSA public key object from PEM formatted PKCS#10 CSR string
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>csrPEM</b>
									
								</dt>
								<dd>PEM formatted PKCS#10 CSR string</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>keyutil 1.0.5</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{Object}</span> RSAKey/DSA/ECDSA public key object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".getKeyFromEncryptedPKCS8PEM"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Object}</span>
					<span class="light">KEYUTIL.</span><b>getKeyFromEncryptedPKCS8PEM</b>(pkcs8PEM, passcode)
					
					</div>
					<div class="description">
						get RSAKey/ECDSA private key object from encrypted PEM PKCS#8 private key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>pkcs8PEM</b>
									
								</dt>
								<dd>string of PEM formatted PKCS#8 private key</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>passcode</b>
									
								</dt>
								<dd>passcode string to decrypt key</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>pkcs5pkey 1.0.5</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{Object}</span> RSAKey or KJUR.crypto.ECDSA private key object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".getKeyFromPlainPrivatePKCS8Hex"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Object}</span>
					<span class="light">KEYUTIL.</span><b>getKeyFromPlainPrivatePKCS8Hex</b>(prvKeyHex)
					
					</div>
					<div class="description">
						get RSAKey/DSA/ECDSA private key object from HEX plain PEM PKCS#8 private key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>prvKeyHex</b>
									
								</dt>
								<dd>hexadecimal string of plain PKCS#8 private key</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>pkcs5pkey 1.0.5</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{Object}</span> RSAKey or KJUR.crypto.{DSA,ECDSA} private key object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".getKeyFromPlainPrivatePKCS8PEM"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Object}</span>
					<span class="light">KEYUTIL.</span><b>getKeyFromPlainPrivatePKCS8PEM</b>(pkcs8PEM)
					
					</div>
					<div class="description">
						get RSAKey/ECDSA private key object from PEM plain PEM PKCS#8 private key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>pkcs8PEM</b>
									
								</dt>
								<dd>string of plain PEM formatted PKCS#8 private key</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>pkcs5pkey 1.0.5</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{Object}</span> RSAKey or KJUR.crypto.ECDSA private key object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".getKeyID"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">KEYUTIL.</span><b>getKeyID</b>(obj)
					
					</div>
					<div class="description">
						get key ID by public key object for subject or authority key identifier
This static method generates a key identifier from a public key
by the method described in 
<a href="https://tools.ietf.org/html/rfc5280#section-4.2.1.2"
target="_blank">RFC 5280 4.2.1.2. Subject Key Identifier (1)</a>.
						
						
					</div>
					
					
					
					<pre class="code">pubkeyobj = KEYUTIL.getKey(...);
KEYTUTIL.getKey(pubkeyobj) &rarr; "a612..."</pre>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>obj</b>
									
								</dt>
								<dd>RSAKey/KJUR.crypto.ECDSA,DSA public key object or public key PEM string</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>keyutil 1.2.2 jsrsasign 5.0.16</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>hexadecimal string of public key identifier</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".getPBKDF2KeyHexFromParam"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{String}</span>
					<span class="light">KEYUTIL.</span><b>getPBKDF2KeyHexFromParam</b>(info, passcode)
					
					</div>
					<div class="description">
						generate PBKDF2 key hexstring with specified passcode and information (DEPRECATED)
As for info, this uses following properties:
<ul>
<li>info.pbkdf2Salt - hexadecimal string of PBKDF2 salt</li>
<li>info.pkbdf2Iter - iteration count</li>
</ul>
Currently, this method only supports PKCS#5v2.0 with PBES2/PBDKF2 of HmacSHA1 and TripleDES.
<ul>
<li>keyDerivationFunc = pkcs5PBKDF2 with HmacSHA1</li>
<li>encryptionScheme = des-EDE3-CBC(i.e. TripleDES</li>
</ul>
						
						
					</div>
					
					
					
					<pre class="code">// to convert plain PKCS#5 private key to encrypted PKCS#8 private
// key with PBKDF2 with TripleDES
% openssl pkcs8 -in plain_p5.pem -topk8 -v2 des3 -out encrypted_p8.pem</pre>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Array}</span> <b>info</b>
									
								</dt>
								<dd>result of parseHexOfEncryptedPKCS8 which has preference of PKCS#8 file</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>passcode</b>
									
								</dt>
								<dd>passcode to decrypto private key</dd>
							
							</dl>
						
						
							<dl class="detailList">
							<dt class="heading">Deprecated:</dt>
							<dt>
								since jsrsasign 10.9.0 keyutil 1.3.0. Use <a href="../symbols/KEYUTIL.html#.getDKFromPBES2Param">KEYUTIL.getDKFromPBES2Param</a> instead.
							</dt>
							</dl>
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>pkcs5pkey 1.0.3</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{String}</span> hexadecimal string of PBKDF2 key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".getPEM"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">KEYUTIL.</span><b>getPEM</b>(keyObjOrHex, formatType, passwd, encAlg, hexType, ivsaltHex)
					
					</div>
					<div class="description">
						get PEM formatted private or public key file from a RSA/ECDSA/DSA key object
<dl>
<dt><b>NOTE1:</b>
<dd>
PKCS#5 encrypted private key protection algorithm supports DES-CBC, 
DES-EDE3-CBC and AES-{128,192,256}-CBC
<dt><b>NOTE2:</b>
<dd>
OpenSSL supports
<dt><b>NOTE3:</b>
<dd>
Parameter "ivsaltHex" supported since jsrsasign 8.0.0 keyutil 1.2.0.
</dl>
						
						
					</div>
					
					
					
					<pre class="code">KEUUTIL.getPEM(publicKey) &rarr; generates PEM PKCS#8 public key 
KEUUTIL.getPEM(privateKey) &rarr; generates PEM PKCS#8 plain private key by default
KEUUTIL.getPEM(privateKey, "PKCS1PRV") &rarr; generates PEM PKCS#1 plain private key
KEUUTIL.getPEM(privateKey, "PKCS5PRV", "pass") &rarr; generates PEM PKCS#5 encrypted private key 
                                                         with DES-EDE3-CBC (DEFAULT)
KEUUTIL.getPEM(privateKey, "PKCS5PRV", "pass", "DES-CBC") &rarr; generates PEM PKCS#5 encrypted 
                                                                private key with DES-CBC
KEUUTIL.getPEM(privateKey, "PKCS8PRV") &rarr; generates PEM PKCS#8 plain private key
KEUUTIL.getPEM(privateKey, "PKCS8PRV", "pass") &rarr; generates PEM PKCS#8 encrypted private key
                                                     with PBKDF2_HmacSHA1_3DES</pre>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>keyObjOrHex</b>
									
								</dt>
								<dd>key object <a href="../symbols/RSAKey.html">RSAKey</a>, <a href="../symbols/KJUR.crypto.ECDSA.html">KJUR.crypto.ECDSA</a> or <a href="../symbols/KJUR.crypto.DSA.html">KJUR.crypto.DSA</a> to encode to</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>formatType</b>
									
								</dt>
								<dd>(OPTION) output format type of "PKCS1PRV", "PKCS5PRV" or "PKCS8PRV" for private key</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>passwd</b>
									
								</dt>
								<dd>(OPTION) password to protect private key</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>encAlg</b>
									
								</dt>
								<dd>(OPTION) encryption algorithm for PKCS#5. currently supports DES-CBC, DES-EDE3-CBC and AES-{128,192,256}-CBC</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>hexType</b>
									
								</dt>
								<dd>(OPTION) type of hex string (ex. pkcs5prv, pkcs8prv)</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>ivsaltHex</b>
									
								</dt>
								<dd>hexadecimal string of IV and salt (default generated random IV)</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>keyutil 1.0.4</dd>
							</dl>
							</dl>
						
						
						
						
						

					<hr />
				
					<a name=".getPlainHexFromEncryptedPKCS8PEM"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{string}</span>
					<span class="light">KEYUTIL.</span><b>getPlainHexFromEncryptedPKCS8PEM</b>(pkcs8PEM, passcode)
					
					</div>
					<div class="description">
						get plaintext hexadecimal PKCS#8 private key from encrypted PKCS#8 PEM private key
This will get a plaintext hexadecimal PKCS#8 private key from a
encrypted PKCS#8 PEM private key.
Currently following algorithms are supported:
<ul>
<li>prf(psudorandom function) - hmacWithSHA1,SHA224,SHA256,SHA384,SHA512</li>
<li>encryptionScheme - des-EDE3-CBC,aes128-CBC,aes256-CBC</li>
</ul>
						
						
					</div>
					
					
					
					<pre class="code">pem = "-----BEGIN ENCRYPTED PRIVATE KEY...";
KEYUTIL.getPlainHexFromEncryptedPKCS8PEM(pem, "passwd") &rarr; "3082..."</pre>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{string}</span> <b>pkcs8PEM</b>
									
								</dt>
								<dd>PEM string of encrypted PKCS#8 private key</dd>
							
								<dt>
									<span class="light fixedFont">{string}</span> <b>passcode</b>
									
								</dt>
								<dd>passcode to decrypt the private key</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>jsrsasign 10.9.0 keyutil 1.3.0</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{string}</span> hexadecimal string of decrypted plaintext PKCS#8 private key</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">See:</dt>
							
								<dd><a href="../symbols/KEYUTIL.html#.parsePBES2">KEYUTIL.parsePBES2</a></dd>
							
							</dl>
						

					<hr />
				
					<a name=".parseCSRHex"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Array}</span>
					<span class="light">KEYUTIL.</span><b>parseCSRHex</b>(csrHex)
					
					</div>
					<div class="description">
						parse hexadecimal string of PKCS#10 CSR (certificate signing request)
Resulted associative array has following properties:
<ul>
<li>p8pubkeyhex - hexadecimal string of subject public key in PKCS#8</li>
</ul>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>csrHex</b>
									
								</dt>
								<dd>hexadecimal string of PKCS#10 CSR</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>keyutil 1.0.5</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{Array}</span> associative array of parsed CSR</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".parseHexOfEncryptedPKCS8"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Array}</span>
					<span class="light">KEYUTIL.</span><b>parseHexOfEncryptedPKCS8</b>(passcode)
					
					</div>
					<div class="description">
						generate PBKDF2 key hexstring with specified passcode and information (DEPRECATED)
The associative array which is returned by this method has following properties:
<ul>
<li>info.pbkdf2Salt - hexadecimal string of PBKDF2 salt</li>
<li>info.pkbdf2Iter - iteration count</li>
<li>info.ciphertext - hexadecimal string of encrypted private key</li>
<li>info.encryptionSchemeAlg - encryption algorithm name (currently TripleDES only)</li>
<li>info.encryptionSchemeIV - initial vector for encryption algorithm</li>
</ul>
Currently, this method only supports PKCS#5v2.0 with PBES2/PBDKF2 of HmacSHA1 and TripleDES.
<ul>
<li>keyDerivationFunc = pkcs5PBKDF2 with HmacSHA1</li>
<li>encryptionScheme = des-EDE3-CBC(i.e. TripleDES</li>
</ul>
						
						
					</div>
					
					
					
					<pre class="code">// to convert plain PKCS#5 private key to encrypted PKCS#8 private
// key with PBKDF2 with TripleDES
% openssl pkcs8 -in plain_p5.pem -topk8 -v2 -des3 -out encrypted_p8.pem</pre>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>passcode</b>
									
								</dt>
								<dd>passcode to decrypto private key</dd>
							
							</dl>
						
						
							<dl class="detailList">
							<dt class="heading">Deprecated:</dt>
							<dt>
								since jsrsasign 10.9.0 keyutil 1.3.0. Use <a href="../symbols/KEYUTIL.html#.parsePBES2">KEYUTIL.parsePBES2</a> instead.
							</dt>
							</dl>
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>pkcs5pkey 1.0.3</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{Array}</span> info associative array of PKCS#8 parameters</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".parsePBES2"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{object}</span>
					<span class="light">KEYUTIL.</span><b>parsePBES2</b>(hP8Prv)
					
					</div>
					<div class="description">
						parse ASN.1 hexadecimal encrypted PKCS#8 private key and return as JSON
This method parses ASN.1 hexadecimal encrypted PKCS#8 private key and returns as 
JSON object based on 
<a href="https://datatracker.ietf.org/doc/html/rfc8018" target="_blank">RFC 8018</a>.
Currently following algorithms are supported:
<ul>
<li>prf(psudorandom function) - hmacWithSHA1,SHA224,SHA256,SHA384,SHA512</li>
<li>encryptionScheme - des-EDE3-CBC,aes128-CBC,aes256-CBC</li>
</ul>
						
						
					</div>
					
					
					
					<pre class="code">KEYUTIL.parsePBES2("3082...") &rarr;
{
  "prf": "hmacWithSHA256",
  "salt": "1234567890abcdef",
  "iter": 2048,
  "encalg": "aes256-CBC",
  "enciv": "12ab...",
  "enc": "34cd..."
}

// to convert plain PKCS#5 private key to encrypted PKCS#8 private
// key with PBKDF2 with TripleDES
% openssl pkcs8 -in plain_p5.pem -topk8 -v2 des3 -out encrypted_p8.pem</pre>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{string}</span> <b>hP8Prv</b>
									
								</dt>
								<dd>hexadecimal encrypted PKCS#8 private key</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>jsrsasign 10.9.0 keyutil 1.3.0</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{object}</span> parsed PBES2 parameters JSON object</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">See:</dt>
							
								<dd><a href="../symbols/KEYUTIL.html#.getDKFromPBES2Param">KEYUTIL.getDKFromPBES2Param</a></dd>
							
							</dl>
						

					<hr />
				
					<a name=".parsePKCS5PEM"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Hash}</span>
					<span class="light">KEYUTIL.</span><b>parsePKCS5PEM</b>(sEncryptedPEM)
					
					</div>
					<div class="description">
						parse PEM formatted passcode protected PKCS#5 private key
Resulted hash has following attributes.
<ul>
<li>cipher - symmetric key algorithm name (ex. 'DES-EBE3-CBC', 'AES-256-CBC')</li>
<li>ivsalt - IV used for decrypt. Its heading 8 bytes will be used for passcode salt.</li>
<li>type - asymmetric key algorithm name of private key described in PEM header.</li>
<li>data - base64 encoded encrypted private key.</li>
</ul>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>sEncryptedPEM</b>
									
								</dt>
								<dd>PEM formatted protected passcode protected PKCS#5 private key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{Hash}</span> hash of key information</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".parsePlainPrivatePKCS8Hex"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Array}</span>
					<span class="light">KEYUTIL.</span><b>parsePlainPrivatePKCS8Hex</b>(pkcs8PrvHex)
					
					</div>
					<div class="description">
						parse hexadecimal string of plain PKCS#8 private key
Resulted associative array has following properties:
<ul>
<li>algoid - hexadecimal string of OID of asymmetric key algorithm</li>
<li>algparam - hexadecimal string of OID of ECC curve name or null</li>
<li>keyidx - string starting index of key in pkcs8PrvHex</li>
</ul>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>pkcs8PrvHex</b>
									
								</dt>
								<dd>hexadecimal string of PKCS#8 plain private key</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>pkcs5pkey 1.0.5</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{Array}</span> associative array of parsed key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".parsePublicPKCS8Hex"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Hash}</span>
					<span class="light">KEYUTIL.</span><b>parsePublicPKCS8Hex</b>(pkcs8PubHex)
					
					</div>
					<div class="description">
						parse hexadecimal string of PKCS#8 RSA/EC/DSA public key
Resulted hash has following attributes.
<ul>
<li>algoid - hexadecimal string of OID of asymmetric key algorithm</li>
<li>algparam - hexadecimal string of OID of ECC curve name, parameter SEQUENCE of DSA or null</li>
<li>key - hexadecimal string of public key</li>
</ul>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>pkcs8PubHex</b>
									
								</dt>
								<dd>hexadecimal string of PKCS#8 public key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{Hash}</span> hash of key information</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".parsePublicRawRSAKeyHex"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Array}</span>
					<span class="light">KEYUTIL.</span><b>parsePublicRawRSAKeyHex</b>(pubRawRSAHex)
					
					</div>
					<div class="description">
						parse hexadecimal string of plain PKCS#8 private key
Resulted associative array has following properties:
<ul>
<li>n - hexadecimal string of public key
<li>e - hexadecimal string of public exponent
</ul>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>pubRawRSAHex</b>
									
								</dt>
								<dd>hexadecimal string of ASN.1 encoded PKCS#8 public key</dd>
							
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Since:</dt>
								<dd>pkcs5pkey 1.0.5</dd>
							</dl>
							</dl>
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd><span class="light fixedFont">{Array}</span> associative array of parsed key</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
                        &copy; 2012-2023 Kenji Urushima, All rights reserved<br/>
			
			Documentation generated by <a href="https://code.google.com/archive/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 
		</div>
	</body>
</html>
